//将数组元素从小到大排序
#include<stdio.h>
void bubble_sort(int arr[],int sz){
    int tmp=0;
    for(int i=0;i<sz-1;i++){//sz个数，往后最多交换sz-1次，因为只能两个数交换，一个数不行
        int j=0;
        int flag=1;//优化,如果有一部分是有序
        for(j=0;j<sz-1-i;j++){//往后交换，前面的不需要管，所以是sz-1-i
            if(arr[j]>arr[j+1]){//弄清楚j和i的区别,如果不符合，就说明是都排序好的
                tmp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=tmp;
                flag=0;}
        }
        if(flag==1){//可以只写flag
            break;//如果是已经排序好的，就跳出循环
        }
    }
}
int main(){
    int arr[]={1,2,3,4,6,5,7,9,8};
    int sz=sizeof(arr)/sizeof(arr[0]);
    int i=0;
    bubble_sort(arr,sz);
    for(i=0;i<sz;i++){
        printf("%d ",arr[i]);
    }
    return 0;
}



//外部动态，内部静态:

//**冒泡排序
// *升序
// */
//void BubbleSort(int arr[],int len)
//{
// int i,j;
// int tem;
// for(i=len-1;i>0;i--)
// {
//     for(j=0;j<i;j++)
//     {
//        if(arr[j]>arr[j+1])
//        {
//            tem = arr[j];
//            arr[j] = arr[j+1];
//            arr[j+1] = tem;
//        }
//     }
// }
//
//}